#ifndef TABLEWGT_H
#define TABLEWGT_H

#include <QWidget>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QPushButton>
#include <QTableView>
#include <QHeaderView>
#include <QObject>
#include <QScrollBar>

class TableWgt : public QWidget
{
    Q_OBJECT

public:
    TableWgt(QWidget *parent = 0);
    ~TableWgt();
    inline QTableView *getTableView(){return m_tableView;}
    void sethHeaderWidth(int width);//设置横向表头的宽度
    void sethHeaderHeight(int height);//设置横向表头的高度
    void sethHeaderSize(int width,int height);//设置横向表头的宽高

    void setvHeaderWidth(int width);//设置纵向表头的宽度
    void setvHeaderHeight(int height);//设置纵向表头的高度
    void setvHeaderSize(int width,int height);//设置纵向表头的宽高

    void sethHeaderColor(const QColor &color);//设置横向表头颜色
    void setvHeaderColor(const QColor &color);//设置纵向表头颜色
    void showWithVerControlBtn(bool isShowVerBtn);//是否显示纵向控制按钮
    void showWithHorControlBtn(bool isShowHorBtn);//是否显示横向控制按钮
    void setTableEditTri(bool isEdit); //设置表格是否可编辑


 public slots:
    void updateVerControlBtn(int rowCount);        // 更新垂直按钮状态，只有视图绑定了模型后才可调用
    void updateHorControlBtn(int colCount);        // 更新水平按钮状态，只有视图绑定了模型后才可调用



protected:
    void showEvent(QShowEvent *e);

private slots:
    void slot_upPageBtn_clicked();
    void slot_upRowBtn_clicked();
    void slot_downRowBtn_clicked();
    void slot_downPageBtn_clicked();

    void slot_leftPageBtn_clicked();
    void slot_leftRowBtn_clicked();
    void slot_rightRowBtn_clicked();
    void slot_rightPageBtn_clicked();


private:
    void InitLayout();
    void InitUi();

private:
    QPushButton *upPageBtn;
    QPushButton *upRowBtn;
    QPushButton *downRowBtn;
    QPushButton *downPageBtn;

    QPushButton *leftPageBtn;
    QPushButton *leftRowBtn;
    QPushButton *rightRowBtn;
    QPushButton *rightPageBtn;

    bool m_isShowVerBtn;
    bool m_isShowHorBtn;

    QTableView *m_tableView;
};

#endif // TABLEWGT_H
